package com.ldp.designpatterns.study.command;

import com.ldp.designpatterns.study.command.concreteCommand.LightOffCommand;
import com.ldp.designpatterns.study.command.concreteCommand.LightOnCommand;
import com.ldp.designpatterns.study.command.invoker.RemoteControl;
import com.ldp.designpatterns.study.command.reciver.Light;

/**
 * @ClassName CommandTest
 * @Description TODO 在这个示例中，我们使用命令模式创建了两种具体的命令：打开电灯和关闭电灯。
 * TODO 遥控器可以设置不同的命令，然后按下按钮触发相应的操作。
 * TODO 这样，命令发送者（遥控器）和命令接收者（电灯）之间实现了解耦
 * @Author lindipei
 * @Date 2023/10/17 18:08
 */
public class CommandTest {
    public static void main(String[] args) {
        Light livingRoomLight = new Light();

        LightOnCommand livingRoomLightOn = new LightOnCommand(livingRoomLight);
        LightOffCommand livingRoomLightOff = new LightOffCommand(livingRoomLight);

        RemoteControl remote = new RemoteControl();

        remote.setCommand(livingRoomLightOn);
        remote.pressButton(); // 打开电灯

        remote.setCommand(livingRoomLightOff);
        remote.pressButton(); // 关闭电灯
    }
}
